Conventional computers generally execute an operating system to manage various aspects of the computer as it is running. Typically, the operating system is responsible for managing access to storage devices as well as input and/or output devices, and controlling the execution of one or more additional applications. Before the operating system can be executed by the computer, it typically must be installed on the computer, a process which usually involves copying multiple files from a distribution medium (e.g., a CD ROM) onto a storage device (e.g., a hard disk) of the computer.
A typical operating system includes a large number of files (currently numbering into the thousands), which can include instructions and/or data. These instructions, when executed by the computer, provide the operating system functionality. With the large number of files also comes a large number of dependencies among files. For example, in order for their intended functionality to be carried out, many files require the installation of one or more other files. Although such dependencies are often known by the manufacturer of the operating system at the time of installation, it can be difficult for a user, administrator, or other software developer to learn about these dependencies. Not knowing about such dependencies can prove troublesome, as software developers may not know what data or instructions in other files affect the particular file(s) they are concerned with, an administrator or user troubleshooting a malfunctioning computer may not know what files are applicable to the problem, etc.
These problems are only exacerbated by post-installation modifications to the operating system. An operating system can be modified in any of a wide variety of manners, such as by adding or replacing one or more particular files, by any of a wide variety of people (e.g., a user, administrator, software developer other than the operating system developer, etc.). When such modifications occur, it increases the difficulty of identifying dependencies among files existing on the computer. Furthermore, it becomes even more difficult to troubleshoot a malfunctioning computer or update the operating system because it is difficult for the user or administrator to know exactly what functionality is (or should be) installed on the computer.
In some systems, the operating system installation and/or updating process(es) display to the user an interface that illustrates the operating system in terms of its functionality (e.g., accessories, games, dial-up networking, etc.). Such interfaces, however, are merely that—user interfaces. Although they provide the user with the ability to select groups of files of the operating system to be installed based on functionality, the operating system itself is still a large collection of files that is not itself componentized and which does not typically identify dependencies among any groups of files.
The componentized operating system described below addresses these and other disadvantages.